<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="generator" content="rustdoc">
    <title>Native Windows GUI guide - Low level</title>

    <link rel="stylesheet" type="text/css" href="style/rustbook.css">
    <link rel="stylesheet" type="text/css" href="style/pygments.css">
    <link rel="stylesheet" type="text/css" href="style/nwg.css">

</head>
<body class="rustdoc">
<!--[if lte IE 8]>
<div class="warning">
    This old browser is unsupported and will most likely display funky
    things.
</div>
<![endif]-->

<!-- NAV BEGIN -->
<div id="nav">
    <button id="toggle-nav">
        <span class="sr-only">Toggle navigation</span>
        <span class="bar"></span>
        <span class="bar"></span>
        <span class="bar"></span>
    </button>
</div>

    
<div id='toc' class='mobile-hidden'>
<ul class='chapter'>
<li><a href='index.html'><b>1.</b> Introduction</a>
</li>
<li><a href='getting_started.html'><b>2.</b> Getting Started</a>
</li>

<li><a href="basics.html"><b>3.</b> Basics </a>
<ul class="section">
    <li><a href="controls.html"><b>3.1.</b> Controls </a></li>
    <li><a href="events.html"><b>3.2.</b> Events </a></li>
    <li><a href="helper.html"><b>3.3.</b> Helpers </a></li>
    <li><a href="small.html"><b>3.4.</b> Small application layout </a></li>
    <li><a href="limitations.html"><b>3.5.</b> Limitations </a></li>
    <li><a href="distribute.html"><b>3.6.</b> Distributing </a></li>
    <li><a href="features.html"><b>3.7.</b> Features </a></li>
</ul>
</li>

<li><a href="intermediate.html"><b>4.</b> Intermediate </a>
<ul class="section">
    <li><a href="layouts.html"><b>4.1.</b> Layouts </a></li>
    <li><a href="resources.html"><b>4.2.</b> Resources </a></li>
    <li><a href="dialogs.html"><b>4.3.</b> Dialogs </a></li>
    <li><a href="localization.html"><b>4.4.</b> Internationalization </a></li>
</ul>
</li>

<li><a href="advanced.html"><b>5.</b> Advanced </a>
<ul class="section">
    <li><a href="partial.html"><b>5.1.</b> Partials ui </a></li>
    <li><a href="dynamic_control.html"><b>5.2.</b> Dynamic control </a></li>
    <li><a href="dynamic_event.html"><b>5.3.</b> Dynamic events </a></li>
    <li><a href="multithreading.html"><b>5.4.</b> Multithreading </a></li>
</ul>
</li>

<li><a href="derive.html"><b>6.</b> Native-windows-derive </a>
<ul class="section">
    <li><a href="nwd_basics.html"><b>6.1.</b> Basics </a></li>
    <li><a href="nwd_controls.html"><b>6.1.</b> Controls </a></li>
    <li><a href="nwd_resources.html"><b>6.2.</b> Resources </a></li>
    <li><a href="nwd_events.html"><b>6.3.</b> Events </a></li>
    <li><a href="nwd_layouts.html"><b>6.4.</b> Layouts </a></li>
    <li><a href="nwd_partial.html"><b>6.5.</b> Partials </a></li>
</ul>
</li>

<li><a href="low.html"><b>7.</b> Low level stuff </a>
    <ul class="section">
        <li><a href="low_events.html"><b>7.1.</b> Raw event handling </a></li>
        <li><a href="extern_wrapping.html"><b>7.2.</b> Raw control handle </a></li>
    </ul>
</li>

</ul>
</div>
<!-- NAV END -->

<div id='page-wrapper'>
    <div id='page'>

        <h1 class="title">Native Windows Derive: Resources</h1>

        The derive macro for the NWG resources works the exact same way as <code>nwg_control</code>, with a few less features because resources are
        much less complicated than controls.

        <h3>Attributes</h3>

        Just like controls, NWD translates the builder API of resources into a list of 

        <br><br>
        <code>nwg_resources(builder_field: builder_value,*)</code>
        <br><br>

        Example:<br>

<div class="highlight"><pre><span></span><span class="k">pub</span><span class="w"> </span><span class="k">struct</span> <span class="nc">App</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">    </span><span class="cp">#[nwg_resource(source_file: Some(</span><span class="s">&quot;./pencil.ico&quot;</span><span class="cp">), size: Some((16, 16)), strict: true )]</span><span class="w"></span>
<span class="w">    </span><span class="n">pen_icon</span>: <span class="nc">nwg</span>::<span class="n">Icon</span><span class="p">,</span><span class="w"></span>
<span class="p">}</span><span class="w"></span>
</pre></div>
            
        <br/><br/>
        Unlike controls, resources cannot have a parent nor can they trigger events.<br/><br/>

        <h3>Self referencing</h3>

        NWD will always initialize the resources before the controls. This means that it is possible to load resources and use them in a control using
        only the NWD attributes.<br/><br/>

        By appending the following format: <code>data.{field}</code>, it's possible to use the resources in the controls. As an example, here's how to
        load and display an image using only NWD.

<div class="highlight"><pre style="width:auto"><span></span><span class="cp">#[derive(Default, NwgUi)]</span><span class="w"></span>
<span class="k">pub</span><span class="w"> </span><span class="k">struct</span> <span class="nc">ImageDisplay</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w">    </span><span class="cp">#[nwg_resource(source_file: Some(</span><span class="s">&quot;dog.bmp&quot;</span><span class="cp">))]</span><span class="w"></span>
<span class="w">    </span><span class="n">dog</span>: <span class="nc">nwg</span>::<span class="n">Bitmap</span><span class="p">,</span><span class="w"></span>

<span class="w">    </span><span class="cp">#[nwg_control(size: (300, 300))]</span><span class="w"></span>
<span class="w">    </span><span class="n">window</span>: <span class="nc">nwg</span>::<span class="n">Window</span><span class="p">,</span><span class="w"></span>

<span class="w">    </span><span class="cp">#[nwg_control(bitmap: Some(&amp;data.dog), size: (300, 300))]</span><span class="w"></span>
<span class="w">    </span><span class="n">frame</span>: <span class="nc">nwg</span>::<span class="n">ImageFrame</span><span class="w"></span>
<span class="p">}</span><span class="w"></span>
</pre></div>


        <br/><br/>
        <br/><br/>

    </div>
</div>

<script src="style/rustbook.js"></script>
</body>
</html>
